Heimdall 應用程式導航首頁建置
1. 核心定位與架構規劃
-
首頁入口門戶:將內網中雜亂的 Port 號(如 Portainer
:9443、LibreNMS:8000、Node-RED:1880、Nextcloud)收攏為可視化卡片。 -
SSL 卸載機制:由於前端通常由 NPM / Traefik 接管 HTTPS 憑證,Heimdall 本身完全不需要對外開放 443 Port,僅需內部監聽 Port 80 即可,省去憑證管理負擔。
-
資料持久化:所有使用者設定、卡片排列、自訂圖示與內建 SQLite 資料庫均儲存在容器內的
/config目錄。
2. Docker Compose 現代化部署
步驟 1:建立持久化目錄與權限
sudo mkdir -p /opt/heimdall/config
sudo chown -R 1000:1000 /opt/heimdall/config
步驟 2:docker-compose.yml 配置
在 /opt/heimdall/docker-compose.yml 中定義:
services:
heimdall:
image: ghcr.io/linuxserver/heimdall:latest
container_name: heimdall
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Taipei
volumes:
- /opt/heimdall/config:/config
# 若走反向代理,只需暴露內部 Port 或直接掛載到共用網路
ports:
- "8081:80"
networks:
- proxy-network
networks:
proxy-network:
external: true
啟動服務:
docker compose up -d
3. 反向代理整合 (NPM / Traefik)
3.1 透過 Nginx Proxy Manager (NPM) 作為預設首頁
-
在 NPM 新增 Proxy Host:
-
Domain Names:
home.example.com(或主網域名稱) -
Forward Hostname / IP:
heimdall(同處proxy-network時直接填容器名) -
Forward Port:
80 -
勾選 Websockets Support 與 Block Common Exploits。
-
-
申請或掛載 SSL 憑證並開啟 Force SSL。
3.2 透過 Traefik v3 (Labels 宣告)
若使用 Traefik,可直接在 docker-compose.yml 的 heimdall 服務段加上標籤,並拿掉 ports: 映射:
labels:
- "traefik.enable=true"
- "traefik.http.routers.heimdall.rule=Host(`home.example.com`)"
- "traefik.http.routers.heimdall.entrypoints=websecure"
- "traefik.http.routers.heimdall.tls=true"
- "traefik.http.routers.heimdall.tls.certresolver=myresolver"
- "traefik.http.services.heimdall.loadbalancer.server.port=80"
4. 基礎使用與「增強型應用 (Enhanced Apps)」功能
Heimdall 的卡片不只是靜態捷徑,它支援串接後端 API 即時顯示數據(Enhanced Apps)。
4.1 新增一般捷徑卡片
-
點選首頁右下角的「+」號(Add item)。
-
在 Application Name 輸入服務名稱(例如
Nextcloud或Portainer)。 -
系統會自動帶出官方支援清單並補齊預設圖示與底色。
-
填入 URL(如
[https://cloud.example.com](https://cloud.example.com))。
4.2 啟用 Enhanced Apps 即時狀態顯示
若服務支援 API 整合(如 Pi-hole、AdGuard Home、qBittorrent、Transmission、Plex、Proxmox):
-
在卡片設定下方會多出 Config 區塊。
-
輸入該應用的 API Key、Token 或帳號密碼。
-
效果:卡片上會直接顯示 Pi-hole 的「已阻擋廣告數/查詢總數」、下載器的「即時下載/上傳速率」或媒體庫的「正在播放人數」。
5. Heimdall 視覺美化技巧 (Personalization)
預設的純色背景與大方塊樣式較為單調,可透過內建功能與自訂 CSS 進行升級: